NIST SP 800-232
NIST Special Publication 800 NIST SP 800-232
制約付きデバイス向けAsconベース軽量暗号標準
Ascon-Based Lightweight Cryptography Standatds for Constrained Devices
認証付き暗号化、ハッシュ、および拡張可能な出力関数
Authenticated Encryption, Hash, and Extendable Output Functions
この出版物(原文)は以下から無料で入手できます:
2025 8月
本稿では、実験手順を適切に規定するために、商用または非商用を問わず、特定の機器、計測器、ソフトウェア、または材料が特定されています。このような特定は、NISTによる製品またはサービスの推奨または支持を意味するものではなく、また、特定された材料または機器が必ずしも本目的に最適なものであることを意味するものでもありません。
本出版物には、NISTが法定責任に基づき現在開発中の他の出版物への参照が含まれている場合があります。本出版物の情報(概念および方法論を含む)は、そのような関連出版物が完成する前であっても、連邦政府機関によって使用される場合があります。したがって、各出版物が完成するまでは、既存の要件、ガイドライン、および手順は引き続き有効です。計画および移行の目的で、連邦政府機関はNISTによるこれらの新しい出版物の開発を注意深く追跡することをお勧めします。
権限 Authority
本出版物は、2014年連邦情報セキュリティ近代化法(FISMA)(44 U.S.C. § 3551 et seq.、公法(P.L.)113-283)に基づくNISTの法定責任に従って作成されました。NISTは、連邦情報システムの最低要件を含む情報セキュリティ標準およびガイドラインの策定に責任を負っていますが、これらの標準およびガイドラインは、当該システムに対する政策権限を行使する適切な連邦職員の明示的な承認がない限り、国家安全保障システムには適用されません。本ガイドラインは、行政管理予算局(OMB)通達A-130の要件に準拠しています。
本出版物の内容は、商務長官が法定権限に基づき連邦機関に義務付け、拘束力のある標準およびガイドラインと矛盾するものと解釈されるべきではありません。また、本ガイドラインは、商務長官、ORCID長官、またはその他の連邦職員の既存の権限を変更または置き換えるものと解釈されるべきではありません。この出版物は、非政府組織(NGO)による自主的な利用が認められており、米国では著作権の対象ではありません。ただし、NISTへの帰属表示をお願いいたします。
NISTテクニカルシリーズ ポリシー
出版履歴
NIST編集審査委員会による承認(2025年7月9日)
このNIST技術シリーズ出版物の引用方法:
Meltem Sönmez Turan、Kerry A. McKay、Donghoon Chang、Jinkeon Kang、John Kelsey (2025) Asconベースの制約付きデバイス向け軽量暗号化標準。(米国国立標準技術研究所、メリーランド州ゲイサーズバーグ)、NIST特別出版(SP)NIST SP 800-232。https://doi.org/10.6028/NIST.SP.800-232 著者 ORCID iDs
NISTリンク切れを直接リンクに修正
連絡先
SP800-232-comments@list.nist.gov
追加情報
関連コンテンツ、今後の更新情報、ドキュメント履歴などが含まれます。
すべてのコメントは、情報公開法(FOIA)に基づいて公開されます。
要約
2023年、米国国立標準技術研究所(NIST)は、リソースが限られたデバイス向けに効率的な暗号化ソリューションを提供するために、Dobraunig、Eichlseder、Mendel、Schläfferによって設計されたAsconアルゴリズムファミリーを選定したことを発表しました。この決定は、厳格な複数ラウンドの軽量暗号標準化プロセスから生まれました。
Asconファミリーには、関連データ付き認証暗号化(AEAD)、ハッシュ関数、拡張可能出力関数(XOF)機能を提供する一連の暗号プリミティブが含まれています。Asconファミリーは、軽量で順列ベースのプリミティブを特徴とし、堅牢なセキュリティ、効率性、柔軟性を提供するため、IoT(モノのインターネット)デバイス、組み込みシステム、低電力センサーなど、リソースが限られた環境に最適です。このファミリーは、高度暗号化標準(AES)が最適なパフォーマンスを発揮できない場合に、実用的な代替手段を提供するために開発されました。この規格では、Ascon-AEAD128、Ascon-Hash256、Ascon-XOF128、および Ascon-CXOF128 の技術仕様とセキュリティ プロパティについて概説しています。
キーワード
Ascon; authenticated encryption (認証付き暗号化); constrained devices (制約付きデバイス); eXtendable Output Function (拡張可能出力関数 XOF); hash function (ハッシュ関数); lightweight cryptography (軽量暗号); permutation-based cryptography (順列ベース暗号); standardization (標準化)。
コンピュータシステム技術に関する報告書
米国国立標準技術研究所(NIST)の情報技術研究所(ITL)は、米国の計測・標準化基盤における技術的リーダーシップを提供することで、米国経済と公共福祉の促進に貢献しています。ITLは、情報技術の開発と生産的利用を促進するため、試験、試験方法、参照データ、概念実証の実装、技術分析を開発しています。ITLの責務には、連邦政府の情報システムにおける国家安全保障関連情報以外の情報の費用対効果の高いセキュリティとプライバシーを確保するための、管理、運営、技術、物理的な標準およびガイドラインの開発が含まれます。特別出版物800シリーズは、ITLによる情報システムセキュリティに関する研究、ガイドライン、アウトリーチ活動、および産業界、政府機関、学術機関との共同活動について報告しています。
特許開示通知
お知らせ:ITLは、本出版物のガイダンスまたは要件の遵守に使用が必要となる可能性のある特許請求の範囲を有する特許権者に対し、当該特許請求の範囲をITLに開示するよう求めています。ただし、特許権者はITLの特許請求に応じる義務を負わず、ITLは本出版物に適用される可能性のある特許を特定するための特許調査を行っていません。
本出版物の発行日およびその後、本出版物のガイダンスまたは要件の遵守に使用が必要となる可能性のある特許請求の範囲の特定を求める要請があった時点で、ITLはそのような特許請求の範囲を特定していません。
ITLは、本出版物の使用において特許侵害を回避するためにライセンスが不要であると表明または暗示するものではありません。
目次 (略)
謝辞
本規格の著者は、標準化プロセスにおいて貴重なコメントと提案をいただいたAscon設計者であるChristoph Dobraunig氏、Maria Eichlseder氏、Florian Mendel氏、Martin Schläffer氏に感謝の意を表します。
また、選定プロセスにおいて貢献いただいたNISTのLawrence Bassham氏、Çağdaş Çalık氏、Deukjo Hong氏、Noah Waller氏をはじめとする同僚の方々にも感謝の意を表します。さらに、技術的および事務的なサポートをいただいたElaine Barker氏、Luís T. A. N. Brandão氏、Lily Chen氏、Andrew Regenscheid氏、Noah Ross氏、Sara Kerman氏、Yu Long Chen氏、Yu Sasaki氏にも感謝の意を表します。
1. はじめに
本規格は、関連データ付き認証暗号化(AEAD)、ハッシュ関数、および2つの拡張可能出力関数(XOF)を提供するAsconアルゴリズムファミリを規定します。
Asconファミリは、制約のある環境において効率性を発揮するように設計されています。本規格に含まれるアルゴリズムは以下のとおりです。
1. Ascon-AEAD128は、ノンスベースのAEAD方式であり、単一鍵設定で128ビットのセキュリティ強度を提供します。
2. Ascon-Hash256は、入力メッセージから256ビットのハッシュを生成する暗号ハッシュ関数であり、128ビットのセキュリティ強度を提供します。
3. Ascon-XOF128は、メッセージのハッシュの出力サイズをユーザーが選択できるXOFであり、サポートされるセキュリティ強度は最大128ビットです。
4. Ascon-CXOF128は、ユーザーがカスタマイズ文字列を指定し、メッセージハッシュの出力サイズを選択できるカスタマイズされたXOFです。最大128ビットのセキュリティ強度をサポートします。
Asconファミリーの開発。Ascon(バージョンv1)$ [1] は、2014年にCAESAR(認証暗号化コンペティション:セキュリティ、適用性、堅牢性)$ ^1 に初めて提出されました。提出されたバージョンには、128ビット鍵のプライマリ推奨Ascon-128と、96ビット鍵のセカンダリ推奨Ascon-96という2つのAEADアルゴリズムが含まれていました。ラウンド2用の更新バージョンv1.1 $ [2] とラウンド3用のv1.2 $ [3] では、ラウンド定数の順序変更などの小さな調整が加えられ、セカンダリ推奨はAscon-128aに更新されました。2019年、CAESARコンペティションの最終ポートフォリオにおいて、軽量認証暗号化ユースケースの第一候補としてAscon-128とAscon-128aが選定されました。
NIST軽量暗号標準化プロセス。2015年、米国国立標準技術研究所(NIST)は、従来の暗号標準(AES-GCM $ [4, 5] 、SHA-2 $ [6] 、SHA-3 $ [7] ハッシュ関数ファミリなど)ではリソースを大量に消費する可能性がある制約のある環境に適した暗号標準を策定するために、軽量暗号標準化プロセスを開始しました。2023年2月、NISTは軽量暗号アプリケーション向けにAsconファミリ $ [8] を標準化することを決定したことを発表しました。詳細については、NIST内部報告書(IR)8268 $ [9] 、IR 8369 $ [10] 、およびIR 8454 $ [11] を参照してください。
Ascon提出v1.2との相違点。本規格とAscon提出$ [8] との技術的な相違点は以下の通りです。
1. 順列。Ascon提出では、6、8、12ラウンドの3つのAscon順列が定義されていました。本標準では、将来の機能拡張の可能性に対応するため、最大16ラウンドまでのラウンド定数を提供することで、追加のAscon順列を規定しています。
2. AEADの派生。Ascon提出パッケージでは、AEADの派生としてASCON-128、ASCON-128a、ASCON-80pqが定義されていました。本標準では、ASCON-128aに基づくAscon-AEAD128アルゴリズムを規定しています。
3. ハッシュ関数の派生。Ascon提出では、ASCON-HASHとASCON-HASHAが定義されていました。本標準では、ASCON-HASHに基づくAscon-Hash256を規定しています。
4. XOFの派生。Ascon提出では、ASCON-XOFとASCON-XOFAという2つのXOFが定義されています。この規格は、ASCON-XOFをベースにしたAscon-XOF128と、新たにカスタマイズされたXOFであるAscon-CXOF128を規定しています。
5. 初期値。アルゴリズムの初期値が更新され、将来の機能拡張に対応する新しいフォーマットがサポートされました。
6. エンディアン。リトルエンディアンマイクロコントローラでのパフォーマンスを向上させるため、エンディアンはビッグエンディアンからリトルエンディアンに変更されました。
7. 切り捨てとノンスマスキング。切り捨てとノンスマスキングを備えたAscon-AEAD128の実装オプションが追加されました。
Ascon の主な特徴。Ascon ファミリーの主な特徴は以下のとおりです。
複数の機能。同じ順列を用いて複数の機能を構築できるため、AEAD、ハッシュ、XOF の各機能の実装でロジックを共有でき、個別に開発された機能よりもコンパクトな実装が可能になります。
オンラインかつシングルパス。Ascon-AEAD128 はオンラインです。つまり、n 番目の暗号文ブロックは、鍵、ノンス、関連データ、および最初の n 個の平文ブロックによって決定されます。Ascon ファミリーのメンバーは、データに対してシングルパスのみを必要とします。
逆順列なし。Ascon ファミリーのメンバーはすべて、基礎となる順列を順方向にのみ使用するため、逆順列の実装は不要です。
構成。第2章では、略語、用語、定義、表記法、基本演算、補助関数など、準備事項を説明します。第3章では、最大16ラウンドまでのAscon順列を規定します。第4章では、Ascon-AEAD128AEAD方式を規定し、切り捨てとノンスマスキングの実装オプションをいくつか示し、検証要件を列挙し、セキュリティ特性を示します。第5章では、Ascon-Hash256ハッシュ関数、Ascon-XOF128 XOF、およびAscon-CXOF128カスタマイズXOFを規定し、それらのセキュリティ特性について説明します。第6章では、適合性に関する情報を提供します。付録Aでは、実装に関する追加の注意事項と変換関数を示します。付録Bでは、初期値の構築に関する追加情報を提供します。
2. 準備
表1に、この規格で使用される頭字語の一覧を示します。
table:表1 頭文字
頭文字 定義 和
AD Associated Data 関連データ
AE Authenticated Encryption 認証付き暗号化
AEAD Authenticated Encryption with Associated Data 関連データと認証付き暗号化
AES Advanced Encryption Standard 高度暗号化規格
CAESAR Competition for Authenticated Encryption: Security, Applicability, and Robustness 認証付き暗号化をめぐる競争:セキュリティ、適用性、そして堅牢性
CXOF Customized eXtendable-Output Function カスタマイズされた拡張可能な出力機能
GCM Galois/Counter Mode ガロア/カウンタモード
NIST National Institute of Standards and Technology 米国国立標準技術研究所
SHA Secure Hash Algorithm セキュアハッシュアルゴリズム
SPN Substitution–Permutation Network 置換順列ネットワーク
SP Special Publication 特別出版
XOF eXtendable-Output Function 拡張可能な出力関数
XOR eXclusive OR 排他的論理和
表 2 では、この規格で使用される用語を定義します。
table:表2 用語と定義
語 和 定義
approved 承認済み FIPS 発行物またはコンピュータセキュリティ SP 800 シリーズの NIST
Special Publication (SP) で規定または採用されているアルゴリズムまたは
手法(つまり、FIPS 承認または NIST 推奨)。
associated data 関連データ 認証されているが暗号化されていない入力データ。
bit ビット 0または1の2進数。この規格(原文)では、ビットはCourier Newフォントで示されます。
bitstring ビット列 有限で順序付けられたビットのシーケンス。
capacity 容量 基礎となる順列の幅からレートを引いた値。
digest ダイジェスト ハッシュ関数または XOF の出力。
eXtendable-Output Function (XOF) 拡張可能出力関数 (XOF) ビット列に対する関数で、出力を任意の長さに拡張できます。
forgery 偽造 秘密鍵を知らない攻撃者によって生成された(暗号文とタグの)ペアが、
検証済みの復号手順によって有効であると認められたもの。
hash function ハッシュ関数 任意の長さの文字列を固定長の文字列に変換する数学関数。
message メッセージ ハッシュ関数への入力。
nonce ノンス 認証された暗号化アルゴリズムへの入力値。特定のキーで実行される
暗号化に1回だけ使用されます。
nonce-misuse nonceの誤用 特定の鍵における暗号化アルゴリズムにおいて、nonce が複数回使用される設定。
nonce-respecting nonceを尊重する 特定のキーにおける暗号化アルゴリズムで、nonceが重複されない設定。
rate レート 基になる順列の呼び出しごとに処理される入力ビット数、または生成される出力ビット数。
secret key 共通鍵(シークレット鍵) 共通鍵 (共有鍵、つまり対称) 暗号化アルゴリズムによって使用され、公開されない暗号化鍵。
shall するものとする この規格への適合を主張するために満たす必要がある要件を表すために使用される用語。
should すべきである この規格の必須要件ではないものの、強い推奨を示す用語です。この
推奨事項を無視すると、望ましくない結果が生じる可能性があります。
tag タグ 計算と検証に秘密鍵の知識が必要となるデータの偶発的なエラーと意図的な
変更の両方を明らかにするように設計された、データの暗号化チェックサム。
truncation 切り捨て 指定された長さの部分文字列のみを保持しながら、入力ビット文字列を短縮するプロセス。
表 3 に、この規格で使用される表記を示します。
表3 表記
表記 定義
$ K 128ビット 共通鍵(secret key)
$ N 128ビット nonce
$ A 関連データ
$ A_i 関連データ$ Aの$ i^{番目}のブロック
$ P 平文
$ P_i 平文$ Pの$ i^{番目}のブロック
$ C 暗号文
$ C_i 暗号文$ Cの$ i^{番目}のブロック
$ Z カスタマイズ列
$ Z_i カスタマイズ列$ Zの$ i^{番目}のブロック
$ T 128ビット認証タグ
$ IV 64ビット定数初期値
fail 認証された暗号文の検証に失敗したことを示すエラーメッセージ
$ M メッセージ
$ M_i メッセージ$ Mの$ i^{番目}のブロック
$ H ハッシュ値$ H
$ H_i ハッシュ値$ Hの$ i^{番目}のブロック
$ S 基礎となる順列の320ビット内部状態
$ S_0,...,S_4 内部状態$ Sの5つの64ビットワード, $ S = S_0 \parallel S_1 \parallel ... \parallel S_4
$ s_(i, j) $ S_iの$ j^{番目}のビット, $ 0 \le i \le 4, 0 \le j \le 7
$ S_i[j] 状態ワード$ S_iの$ j^{番目}のバイト, $ 0 \le i \le 4, 0 \le j \le 7
$ S_{[i:j]} 状態$ S の、インデックス$ i からインデックス$ j までの部分集合(インデックス を含む)。
$ 𝑖 > 𝑗 の場合、$ 𝑆_{[𝑖∶𝑗]} は空文字列です。$ 𝑖 = 𝑗 の場合、$ 𝑆_{[𝑖∶𝑗]} は1ビットです。
λ 切り捨てられたタグのビット長
$ c_i Ascon順列の$ 𝑖の丸めの定数値
$ P_C, P_S, P_L ラウンド関数 𝑝 の定数加算、置換、線形層
表 4 に、この規格で使用される基本的な操作と機能を示します。
表4. 基本操作と機能
関数 定義
$ \{0,1\}^* 空文字列を含むすべての有限ビット文字列の集合
$ \{0,1\}^s 長さ$ sのすべてのビット文字列の集合
$ 0^s $ s \ge 0の場合、$ 0^s は$ s個の連続する 0 からなるビット文字列です。
$ 𝑠 = 0 の場合、$ 0^sは空文字列です。
$ |X| ビット列$ Xの長さ(ビット)
$ X \parallel Y ビット列$ Xと$ Yの連結
$ x \times y 整数$ xと$ yの乗算
$ x+y 整数$ xと$ yの加算
$ x-y 整数$ xと$ yの引き算
$ x/y 整数$ xと非ゼロ整数$ yの除算
$ x\bmod y $ xを$ yで割った整数の余り
$ \lceil x\rceil 実数$ xに対して、$ x以上の最小の整数
$ \lfloor x\rfloor 実数$ xに対して、$ x以下の最大の整数
$ f\circ g 関数$ fと$ gの合成(例えば、関数$ f(x)と$ g(x)の場合、$ f\circ gは$ f(g(x))と評価される)
$ \odot ビット単位のAND演算
$ \oplus ビット単位のXOR演算
$ X \ggg i 64ビットワード$ Xの$ iビットによる右回転(循環シフト)。最下位ビットは右端のビットです。
$ X \ll i $ iビット左シフト
$ X_{[i:j]} ビット文字列$ X の、インデックス$ i からインデックス$ j までの部分集合(両端を含む)。$ i > j の場合、$ X は空文字列です。$ [𝑖∶𝑗] $ 𝑖 = 𝑗 の場合、$ X_{[i∶j]} は1ビットです。
$ x==y 等価比較を行うブール演算子(つまり、$ xが$ yと等しい場合はtrue、そうでない場合はfalse)
$ 0\mathtt{x} 16進表記
$ int64(x) 整数𝑥の64ビット表現
2.1 補助関数 Auxiliary Functions
解析関数(Parse Function)。 parse$ (𝑋, 𝑟) 関数は、入力ビット文字列$ X をブロックのシーケンス$ X_0, X_1, … ,\widetilde{X}_ℓ に解析します。ここで、$ l ←$ \lfloor|X|/r\rfloor (つまり、$ X ← X_0 \parallel X_1 \parallel…\parallel\tilde{X}_l )。$ 0 \le i \le l-1 の$ X_i ブロックはそれぞれビット長$ r を持ちますが、$ 0\le \widetilde{X}_l\le r-1 です (アルゴリズム1を参照)。$ |X| \bmod r = 0の場合、最後のブロックは空になります(つまり、$ |\widetilde{X}_l|= 0)。
アルゴリズム 1 parse$ (X,r)
入力: ビット列 $ X, 正の整数$ r
出力: ビット列 $ X_0,...,X_{l-1},\widetilde{X}_l
$ l ←\lfloor|X|/r\rfloor
for i = 0 to l-1 do
$ X_i ← X_{[i\times r:(i+1)\times r-1]}
end for
$ \widetilde{X_l}←X_{[l \times r:|X|-1]}
return $ X_0,...,X_{l-1},\widetilde{X_l}
パディング規則 (Padding rule)。関数 pad($ X ,𝑟) は、ビット列$ X にビット 1 を付加し、その後にビット列 $ 0^j を付加します。ここで、$ j は $ (-|X| - 1) \mod r に等しいです。出力ビット列の長さは$ r の倍数です(アルゴリズム 2 を参照)。データを 64 ビット符号なし整数として表現する場合のパディングの例については、付録 A.2 を参照してください。
アルゴリズム2 pad(X, r)
入力: ビット列 $ X , 正の整数 r
出力: バッドビット列 $ X'
$ j ←(-|X|-1) \mod r
$ X' ← X || 1 || 0^j
return $ X'
3. Ascon順列
このセクションでは、$ rnd ラウンドの$ Ascon-p[rnd] 順列を規定する。ここで、$ rnd は実行されるラウンド数を示し、$ 1 ≤ rnd ≤ 16 である。順列は、Substitution-Permutation-Network (SPN) 構造に従い、3 つのステップの合成として定義されるラウンド関数$ p の反復で構成される。
$ p = p_L ∘ p_S∘p_C, (1)
ここで、$ p_C は定数加算層(セクション 3.2 を参照)、$ p_S は置換層(セクション 3.3 を参照)である。$S p_L は線形拡散層(3.4節参照)である。この合成は、入力𝑥に対する関数呼び出しの連続として$ p_L(p_S(p_C(x))) と書くこともできる。 𝐴𝑠𝑐𝑜𝑛-𝑝8と𝐴𝑠𝑐𝑜𝑛-𝑝12はAsconファミリーの主要な構成要素であり、他のラウンド数でインスタンス化された順列は、後で他の機能を標準化するために使用される可能性があることに注意する。 3.1. 内部状態
これらの順列は320ビットの状態$ S に基づいて動作します。状態Sは、$ 0 ≤ 𝑖 ≤ 4 に対して$ S_i と表記される5つの64ビットワードで表されます。
$ S = S_0 || S_1 || S_2 || S_3 || S_4 . (2)
$ s_{(i,j)} を$ S_i の$ j 番目のビット$ 0 ≤ 𝑗 < 64 とします。この$ Ascon 順列の仕様では、各状態ワードは64ビットの符号なし整数を表し、最下位ビットは右端のビットになります。状態のその他の表現の詳細については、付録Aを参照してください。
3.2.定数加算層 $ p_C
Ascon順列 $ Ascon-p[rnd] ($ rnd ラウンドでインスタンス化) の第$ i ラウンドの定数$ c_i は、$ rnd ≤ 16 かつ$ 0 ≤ i ≤ rnd − 1 の場合、次のように定義されます。
$ c_i = \tt{const}_{16−rnd+i} , (3)
ここで、$ \tt{const}_0、…、const_{15} は表 5 で定義されています。定数加算層 $ p_C は、$ i ≥ 0 のラウンド $ S_2 において、64ビットのラウンド定数$ c_i を次の値に加算します。
$ S_2 = S_2 ⊕ c_i. (4)
table:表5 Ascon順列の丸め定数を導出するための定数 const_i
i const_i i const_i
0 0x000000000000003c 8 0x00000000000000b4
1 0x000000000000002d 9 0x00000000000000a5
2 0x000000000000001e 10 0x0000000000000096
3 0x000000000000000f 11 0x0000000000000087
4 0x00000000000000f0 12 0x0000000000000078
5 0x00000000000000e1 13 0x0000000000000069
6 0x00000000000000d2 14 0x000000000000005a
7 0x00000000000000c3 15 0x000000000000004b
定数の最初の 56 ビットはゼロなので、実際には、図 1 に示すように、定数を $ S_2 の最下位 8 ビットのみに適用することと同じです。
(略)
図1. 定数加算層$ p_C のAscon状態への適用
3.3. 置換レイヤー$ p_S
置換層$ p_S は、5ビットの置換ボックスSBOXを64回並列に適用して状態Sを更新する。
$ (s_{(0,j)},s_{(1,j)},...,s_{(4,j)})=SBox(s_{(0,j)},s_{(1,j)},...,s_{(4,j)}) (5)
図2に示すように、(0 ≤ 𝑗 < 64)として。
(略)
図2. 置換層$ p_S のAscon状態への適用
5-bit SBoxは次のように計算されます
$ (y_0,...,y4)=SBox(x_0,...,x_4), (6)
ここで
$ y_0=x_4x_1 \oplus x_3 \oplus x_2x_1\oplus x_2\oplus x_1x_0\oplus x_1 \oplus x_0,
$ y_1= x_4\oplus x_3x_2\oplus x_3x_1\oplus x_3\oplus x_2x_1\oplus x_2\oplus x_1\oplus x_0,
$ y_2= x_4x_3\oplus x_4\oplus x_2\oplus x_1\oplus 1, (7)
$ y_3 = x_4x_0 \oplus x_4 \oplus x_3x_0 \oplus x_3\oplus x_2\oplus x_1\oplus x_0,
$ y_4 = x_4x_1\oplus x_4\oplus x_3\oplus x_1x_0\oplus x_1.
SBoxは、表6に示すように、ルックアップテーブルとして実装することもできます。SBoxの回路図を図3に示します。
table:表6 SBOXのルックアップテーブル表現
x 0 1 2 3 4 5 6 7 8 9 a b c d e f
SBox(x) 4 b 1f 14 1a 15 9 2 1b 5 8 12 1d 3 6 1c
x 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
SBox(x) 1e 13 7 e 0 d 11 18 10 c 1 19 16 a f 17
5 ビットの入力は 16 進数で表されることに注意してください (例: 𝑥 =1 は (0, 0, 0, 0, 1) に対応します)。
(略)
図3. 5ビットSボックスSBOXの回路表現
3.4. 線形拡散層 $ 𝑝_𝐿
線形拡散層 𝑝𝐿 は、図4に示すように、各64ビットワード 𝑆𝑖 内で拡散を提供します。
図4. 線形拡散層𝑝𝐿のAscon状態への適用
このs層は、線形関数$ Σ_i を対応する状態語に$ S_i ←Σ_i(S_i)として適用します。
ただし、$ 0 ≤ 𝑖 ≤ 4 です。ここで、各$ \Sigma_𝑖は次のように定義されます。
$ \Sigma_0(S_0)=S_0\oplus(S_0 \ggg19)\oplus(S_0\ggg28) (8)
$ \Sigma_1(S_1)=S_1\oplus(S_1\ggg61)\oplus(S_1\ggg39) (9)
$ \Sigma_2(S_2)=S_2\oplus(S_2\ggg\:\:1)\oplus(S_2\ggg\:\:6) (10)
$ \Sigma_3(S_3)=S_3\oplus(S_3\ggg10)\oplus(S_3\ggg17) (11)
$ \Sigma_4(S_4)=S_4\oplus(S_4\ggg\:\:7)\oplus(S_4\ggg41) (12)
4. 認証付き暗号化方式:Ascon-AEAD128
本セクションでは、AEAD方式Ascon-AEAD128を規定し、実装オプション(例えば、切り捨てやノンスマスキング)の詳細を示し、AEADの要件を列挙し、セキュリティ特性を示します。
4.1. Ascon-AEAD128の規定
Ascon-AEAD128は、暗号化アルゴリズムAscon-AEAD128.enc(セクション4.1.1で規定)と復号アルゴリズムAscon-AEAD128.dec(セクション4.1.2で規定)で構成されます。
Ascon-AEAD128.enc は、128 ビットの秘密鍵 𝐾、128 ビットのノンス 𝑁、可変長の関連データ 𝐴、可変長の平文 𝑃 を入力として受け取り、暗号文 𝐶 (ただし |𝐶| = |𝑃 |) と 128 ビットの認証タグ 𝑇 を出力します (切り捨てオプションについては 4.2.1 節を参照)。
$ \tt{Ascon-AEAD128.enc}(𝐾, 𝑁, 𝐴, 𝑃 ) = (𝐶, 𝑇 ) (13)
Ascon-AEAD128.dec は、鍵 $ K 、ノンス$ N 、関連データ $ A 、暗号文 $ C 、認証タグ$ T を入力として受け取り、出力として受け取ります。タグが有効な場合:
code:tex
{\tt Ascon-AEAD128.dec}(K, N, A, C, T ) = \left\{ \begin{align*} P & Tが有効な場合 \\ {\tt fail} & そうでない場合 \end{align*} \right. (14)
4.1.1. 暗号化 Encryption
このセクションでは、Ascon-AEAD128 の暗号化アルゴリズムの概要を説明します。このアルゴリズムは、初期化、関連データ処理、平文処理、およびファイナライズの 4 つのフェーズで構成されています (図 5 を参照)。
Ascon-AEAD128 のレートと容量はそれぞれ 128 ビットと 192 ビットであることに注意してください。
(略)
図5. Ascon-AEAD128暗号化
Ascon-AEAD128.enc の疑似コードはアルゴリズム 3 に提供されています。
アルゴリズム3 $ {\tt Ascon-AEAD128.enc}(K, N, A, P)
入力: 128-bit 鍵$ K , 128-bit nonce $ N , 関連データ$ A , 平文$ P
出力: 暗号文$ C 、128-bitタグ$ T
$ IV ← \tt0x00001000808c0001
$ S ← IV || K || N
$ S ← Ascon-p \lbrack 12 \rbrack(S)
$ S ← S \oplus(0^{192}||K)
$ {\tt if} |A|> 0 \: {\tt then}
$ A_0,...,A_{m-1},\widetilde{A_m}←\mathrm{parse}(A,128)
$ A_m←\mathrm{pad}(\widetilde{A_m},128)
$ {\tt for}\: \mathrm{i = 0 \: to} \: m \: {\tt do}
$ S ← Ascon-p\lbrack8\rbrack((S_{\lbrack 0:127\rbrack} \oplus A_i)||S_{\lbrack128:319\rbrack})
$ {\tt end \: for}
$ {\tt end \: if}
$ S ← S \oplus (0^{319}|| 1)
$ P_0,...,P_{n-1},\widetilde{P_n}←{\mathrm{parse}}(P,128)
$ l ←|\widetilde{P_n}|
$ {\tt for}\: i=0 \: \mathrm{to} \: n-1 \:{\tt do}
$ S_{\lbrack 0:127\rbrack}←S_{\lbrack 0:127\rbrack}\oplus P_i
$ C_i←S_{\lbrack 0:127\rbrack}
$ S←Ascon-p\lbrack8\rbrack(S)
$ {\tt end \: for}
$ S_{\lbrack 0:127\rbrack}←S_{\lbrack 0:127\rbrack}\oplus \mathrm{pad}(\widetilde{P_n},128)
$ \widetilde{C_n}←S_{\lbrack0:l-1\rbrack}
$ C←C_0||...||C_{n-1}||\widetilde{C_n}
$ S←Ascon-p\lbrack 12\rbrack(S\oplus(0^{128}||K||0^{64}))
$ T←S_{\lbrack192:319\rbrack}\oplus K
$ {\tt return}\: C,T